1 : <?php
2 : /*--------------------------------------------------------------------------+
3 : This file is part of eStudy.
4 : courses/classes/class.ModulegroupConfiguration.inc.php
5 : - Modulgruppe: Veranstaltungen
6 : - Beschreibung: Administrieren der in eine Veranstaltung eingebundene Modulgruppen.
7 : - Version: 0.1, 03/02/04
8 : - Autor(en): Timo Fuchs <timo.fuchs@mni.fh-giessen.de>
9 : +---------------------------------------------------------------------------+
10 : This program is free software; you can redistribute it and/or
11 : modify it under the terms of the GNU General Public License
12 : as published by the Free Software Foundation; either version 2
13 : of the License, or any later version.
14 : +---------------------------------------------------------------------------+
15 : This program is distributed in the hope that it will be useful,
16 : but WITHOUT ANY WARRANTY; without even the implied warranty of
17 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 : GNU General Public License for more details.
19 : You should have received a copy of the GNU General Public License
20 : along with this program; if not, write to the Free Software
21 : Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 : +--------------------------------------------------------------------------*/
23 :
24 : /**
25 : * In dieser Datei wird die Klasse ModulegroupConfiguration implementiert.
26 : * @package eStudy.Courses
27 : * @version 0.1, 03/02/04
28 : * @author Timo Fuchs <timo.fuchs@mni.fh-giessen.de>
29 : */
30 :
31 : /**Kontrollsteuerung für den Assistens Modus*/
32 1 : require_once ("class.assistControll.inc.php");
33 :
34 : /**
35 : * Modulgruppen-Konfiguration einer Veranstaltung.
36 : * @package eStudy.Courses
37 : * @version 0.1, 03/02/04
38 : * @author Timo Fuchs <timo.fuchs@mni.fh-giessen.de>
39 : */
40 1 : class ModulegroupConfiguration {
41 :
42 : /**
43 : * ID der Veranstaltung.
44 : *
45 : * @access private
46 : * @var integer
47 : */
48 : var $courseid;
49 :
50 : /**
51 : * Bitmaske fuer eingebundene Module.
52 : *
53 : * @access private
54 : * @var integer
55 : */
56 : var $dbModulesMask;
57 :
58 : /**
59 : * Bitmaske fuer die gesetzten Tutorenrechte auf Modulgruppen.
60 : *
61 : * @access private
62 : * @var integer
63 : */
64 : var $dbAssRightsMask;
65 :
66 : /**
67 : * Im Portal vorhandene Modulgruppen.
68 : *
69 : * @access private
70 : * @var mixed[] - integer 'id' - ID der Modulgruppe
71 : * string 'name' - Name der Modulgruppe
72 : * integer 'choosable' - Modulgruppe auswaehlbar (1 = ja , 0 = nein)
73 : * bool 'boundin' - Modulgruppe in Veranstaltung aktiviert
74 : * bool 'assright' - Tutorenzugriff fuer Modulgruppe
75 : */
76 : var $groups;
77 :
78 : /**
79 : * Konstruktor.
80 : * Initialisiert die Objektvariablen.
81 : *
82 : * @access public
83 : * @param integer $courseid - ID der Veranstaltung
84 : * @return bool - true, wenn alles O.K.
85 : * false, wenn Fehler bei Initialisierung
86 : */
87 : function ModulegroupConfiguration($courseid) {
88 0 : global $db;
89 :
90 0 : $this->courseid = $courseid;
91 0 : $this->groups = array();
92 0 : $this->dbModulesMask = $this->getCourseModules($this->courseid);
93 0 : $this->dbAssRightsMask = $this->getCourseAssRights($this->courseid);
94 :
95 0 : $allGroupsQ = "SELECT ID, Name, Choosable FROM modulegroups ORDER BY Name";
96 0 : $allGroups = $db->get_results($allGroupsQ);
97 :
98 0 : if(!is_array($allGroups)) return false;
99 :
100 0 : foreach($allGroups as $groupObj) {
101 0 : $group = array();
102 0 : $group['id'] = (int)$groupObj->ID;
103 0 : $group['name'] = $groupObj->Name;
104 0 : $group['choosable'] = $groupObj->Choosable;
105 :
106 : // Prüfen, ob Modulgruppe in Veranstaltung aktiviert.
107 0 : if( ((int)pow(2, (int)$groupObj->ID - 2)) & $this->dbModulesMask) {
108 0 : $group['boundin'] = true;
109 0 : } else {
110 0 : $group['boundin'] = false;
111 : }
112 :
113 : // Prüfen, ob Tutorenrecht für Modulgruppe in Veranstaltung gesetzt.
114 0 : if( ((int)pow(2, (int)$groupObj->ID - 2)) & $this->dbAssRightsMask) {
115 0 : $group['assright'] = true;
116 0 : } else {
117 0 : $group['assright'] = false;
118 : }
119 0 : if($groupObj->ID > 1) { // Gruppen mit Id < 2 werden sowieso nicht berücksichtigt.
120 0 : $this->groups[] = $group;
121 0 : }
122 0 : }
123 :
124 0 : return true;
125 : }
126 :
127 : /**
128 : * Speichert eine Modulgruppenkonfiguration.
129 : *
130 : * @access protected
131 : * @param integer $courseid - ID der Veranstaltung
132 : * @param integer[] $modules - IDs der aktivierten Modulgruppen
133 : * @param integer[] $assrights - IDs der Modulgruppen, fuer die Tutorenzugriff erlaubt
134 : * @return bool - true, wenn Einstellungen gespeichert wurden
135 : * false, falls Fehler auftrat
136 : */
137 : function saveConfiguration($courseid, $modules, $assrights) {
138 0 : if(!is_array($modules) || !is_array($assrights)) {
139 0 : return false;
140 : }
141 0 : if(!$this->setCourseModulegroups($courseid, $modules)) {
142 0 : return false;
143 : }
144 0 : if(!$this->setCourseAssRights($courseid, $assrights)) {
145 0 : return false;
146 : }
147 0 : return true;
148 : }
149 :
150 : /**
151 : * Setzt die Bitmaske fuer die aktivierten Modulgruppen einer Veranstaltung.
152 : * Von Aenderungen betroffen ist hier DB.courses.modules .
153 : *
154 : * @access private
155 : * @param integer $courseid - ID der Veranstaltung
156 : * @param integer[] $groupids - Array mit IDs der aktivierten Modulgruppen.
157 : * @return bool - true, wenn Bitmaske gesetzt
158 : * false, wenn DB-Fehler auftrat
159 : */
160 : function setCourseModulegroups($courseid, $groupids) {
161 0 : global $db, $EZSQL_ERROR;
162 :
163 0 : if(!is_array($groupids)) return false;
164 :
165 0 : $mask = 0;
166 0 : foreach($this->groups as $group) {
167 0 : if(!$group['choosable']) {
168 0 : $mask = $mask | (int)pow(2, (int)$group['id'] - 2);
169 0 : }
170 0 : }
171 0 : foreach($groupids as $id) {
172 0 : $mask = $mask | (int)pow(2, (int)$id - 2);
173 0 : }
174 0 : $errorCount = count($EZSQL_ERROR);
175 0 : $db->query("UPDATE courses SET Modules='".$mask."' WHERE ID='".$courseid."'");
176 0 : if(count($EZSQL_ERROR) > $errorCount) return false;
177 :
178 0 : $this->dbModulesMask = $mask;
179 :
180 0 : return true;
181 : }
182 :
183 : /**
184 : * Setzt die Bitmaske fuer den Tutorenzugriff auf Modulgruppen einer Veranstaltung.
185 : * Von Aenderungen betroffen ist hier DB.courses.AssRights .
186 : *
187 : * @access private
188 : * @param integer $courseid - ID der Veranstaltung
189 : * @param integer[] $groupids - Array mit IDs der Modulgruppen, fuer die Tutorenzugriff erlaubt ist.
190 : * @return bool - true, wenn Bitmaske gesetzt
191 : * false, wenn DB-Fehler auftrat
192 : */
193 : function setCourseAssRights($courseid, $groupids) {
194 0 : global $db, $EZSQL_ERROR;
195 :
196 0 : if(!is_array($groupids)) return false;
197 :
198 0 : $mask = 0;
199 0 : foreach($groupids as $id) {
200 0 : $mask = $mask | (int)pow(2, (int)$id - 2);
201 0 : }
202 0 : $errorCount = count($EZSQL_ERROR);
203 0 : $db->query("UPDATE courses SET AssRights='".$mask."' WHERE ID='".$courseid."'");
204 0 : if(count($EZSQL_ERROR) > $errorCount) return false;
205 :
206 0 : $this->dbAssRightsMask = $mask;
207 :
208 0 : return true;
209 : }
210 :
211 : /**
212 : * Gibt die Bitmaske fuer die in der Veranstaltung aktivierten Modulgruppen zurueck.
213 : *
214 : * @access private
215 : * @param integer $courseid - ID der Veranstaltung
216 : * @return integer - Bitmaske aus DB.courses.Modules
217 : */
218 : function getCourseModules($courseid) {
219 0 : global $db;
220 :
221 0 : $modules = $db->get_var("SELECT Modules FROM courses WHERE ID='".$courseid."'");
222 0 : if(!$modules) {
223 0 : return 0;
224 : }
225 :
226 0 : return (int)$modules;
227 : }
228 :
229 : /**
230 : * Gibt die Bitmaske fuer Tutorenzugriff auf Modulgruppen zurueck.
231 : *
232 : * @access private
233 : * @param integer $courseid - ID der Veranstaltung
234 : * @return integer - Bitmaske aus DB.courses.AssRights
235 : */
236 : function getCourseAssRights($courseid) {
237 0 : global $db;
238 :
239 0 : $assRights = $db->get_var("SELECT AssRights FROM courses WHERE ID='".$courseid."'");
240 0 : if(!$assRights) {
241 0 : return 0;
242 : }
243 :
244 0 : return (int)$assRights;
245 : }
246 :
247 : /**
248 : * Gibt einen Dialog zum Konfigurieren der Modulgruppen
249 : * bezueglich einer Veranstaltung aus.
250 : *
251 : * @access protected
252 : * @return mixed - void, falls alles O.K.
253 : * bool false, falls Objektvariablen fehlerhaft initialisiert.
254 : */
255 : function echoModulegroupsForm() {
256 0 : if(!isset($this->courseid) || !isset($this->groups)) return false;
257 :
258 : echo "<form method='post' action='modulegroupConfig.php'>
259 : <table class='tableBorder'>
260 : <tr><td class='tableHead' colspan='4'>Modulgruppen</td></tr>
261 : <tr>
262 : <td class='tableCellHead'>Modulgruppe</td>
263 : <td class='tableCellHead'>Aktiviert</td>
264 : <td class='tableCellHead'>Tutorenzugriff</td>
265 0 : <td class='tableCellHead'>".Utilities::helpCode(100000)."</td></tr>";
266 0 : foreach($this->groups as $group) {
267 0 : echo "<tr><td class='tableCell'>".$group['name']."</td><td class='tableCell'>
268 0 : <p class='pForm'><input type='checkbox' name='checkedModules[]' value='".$group['id']."' ";
269 0 : if(!$group['choosable']) {
270 0 : echo " checked='checked' disabled='disabled' ";
271 0 : } else {
272 0 : if($group['boundin'] === true) {
273 0 : echo " checked='checked' ";
274 0 : }
275 : }
276 : echo "/></p></td><td class='tableCell'>
277 0 : <p class='pForm'><input type='checkbox' name='checkedAssRights[]' value='".$group['id']."' ";
278 0 : if($group['assright'] === true) {
279 0 : echo "checked='checked'";
280 0 : }
281 0 : echo "/></p></td><td>".Utilities::helpCode(100000 + $group["id"])."</td></tr>";
282 0 : }
283 : echo "<tr><td class='tableCell' colspan='4' style='text-align:center;'>
284 : <hr />
285 : <p class='pForm'><input type='reset' value='Zurücksetzen'/></p>
286 : <p class='pForm'><input type='submit' name='save' value='Speichern'/></p>
287 : </td></tr>
288 : </table>
289 0 : </form>";
290 0 : }
291 :
292 : public function setModuleGroupsDefault() {
293 :
294 0 : $this->setCourseModulegroups($this->courseid,0);
295 0 : }
296 :
297 : public function echoAssistDesc() {
298 : echo "Assistensmodus aktiviert: <br>" .
299 0 : "Standardmäßig sind die Module für das Forum und Dateien & Links aktiviert <br>" .
300 0 : "Wünschen sie weitere Module können sie diese hier aktivieren <br>";
301 0 : }
302 : }
303 :
304 :
|